package com.itlong.cloud.property.dao;

import com.itlong.cloud.POJO.VO.app.AppServiceTemporaryCarListVO;
import com.itlong.cloud.POJO.VO.operate.OperateFixedVehicleInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      物业管理-车辆的月卡管理服务持久层接口
 * </desc>
 *
 * @createDate 2018/11/05
 */
@Mapper
@Repository
public interface IPropertyCarMonthCardDao {

    /**
     * <desc>
     *      车辆开通或修改月卡
     * </desc>
     *
     * @param map 参数集
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2018/11/05
     */
    Integer openMonthCard(Map<String, Object> map);

    /**
     * <desc>
     *      根据日期查询当前账单单号
     * </desc>
     *
     * @param date 日期
     * @return 账单单号
     * @author wangzhi
     * @createDate 2018/11/05
     */
    String getFeeNumberByDate(@Param("date")String date, @Param("projectId") String projectId);

    /**
     * <desc>
     *      保存账单
     * </desc>
     *
     * @param params 保存的参数集
     * @return 保存的条数
     * @author wangzhi
     * @createDate 2018/11/05
     */
    Integer save(Map<String,Object> params);

    /**
     * <desc>
     *      查询月卡截止时间
     * </desc>
     *
     * @param carId 车辆id
     * @param projectId 项目id
     * @return 月卡截止时间
     * @author wangzhi
     * @createDate 2018/11/05
     */
    String getEndTimeAgo(@Param("carId") String carId, @Param("projectId") String projectId);

    /**
     * <desc>
     *      固定车辆信息分页查询
     * </desc>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/11/05
     */
    List<OperateFixedVehicleInfoVO> getFixedVehiclePage(Map<String, Object> params);

    /**
     * <desc>
     *      固定车辆信息总数量
     * </desc>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/11/05
     */
    Integer getFixedVehicleCount(Map<String, Object> params);

    /**
     * <desc>
     *      获取临时车辆列表
     * </desc>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/11/07
     */
    List<AppServiceTemporaryCarListVO> temporaryCarList(Map<String, Object> params);

    /**
     * <desc>
     *      获取临时车辆总数量
     * </desc>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/11/12
     */
    Integer temporaryCarCount(Map<String, Object> params);

    /**
     * <desc>
     *      删除临时车辆通行记录
     * </desc>
     *
     * @param plateNumber 车牌
     * @param userId 用户编号
     * @return
     * @author Qiang.S
     * @createDate 2018/11/07
     */
    Integer deleteTemporaryCar(@Param("plateNumber")String plateNumber, @Param("userId")String userId);

    /**
     * <desc>
     *      获取车辆月卡缴费记录数
     * </desc>
     *
     * @param carId 车辆id
     * @param projectId 项目id
     * @return 月卡缴费记录数
     * @author wangzhi
     * @createDate 2018/11/15
     */
    Integer getRenewMonthCardRecordCount(@Param("carId") String carId, @Param("projectId") String projectId);

    /**
     * <desc>
     *      清除临时车辆列表
     * </desc>
     *
     * @param userId 用户编号
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/06/25
     */
    Integer deleteAllTemporaryCar(@Param("userId") String userId);
}
